<?php
/**
 * Application level Controller
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */

App::uses('Controller', 'Controller');

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package       app.Controller
 * @link http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller {
	
    // var $helpers = array ('Form', 'Html','Acl','Session','Permission','Time');
	// var $components = array ('Auth' => array( 'className'=>'PowerAuth' ), 'Acl', 'Session');
	
	static $flags=array("ita"=>"famfamfam-flag-it","eng"=>"famfamfam-flag-gb");
	
	
	//var $layoutPath = "bootstrap"; //per cambiare la cartella dove trovare il layout
	 var $layout = "wchart"; // commento perche si chiama nello stesso modo di quello assegnato sul controler
	
    function beforeFilter() {
        // This callback is executed before the action

        // disabilitare i warning
        Configure::write('debug',2);
		// pr(session_id());die;
		
        // per cambiare i campi username e password di defualt utilizzati dal componente
        //$this->Auth->fields = array('username' => 'email', 'password' => 'password');

        // per specificare condizioni agli oggetti di autenticazione
        // $this->Auth->authenticate = array(
 		// 'all' => array(
 			// // 'userModel' => 'Users.User',
 			// 'scope' => array("OR" => array(array('User.stato' => USER_ATTIVO),array('User.stato' => USER_NON_ATTIVO)))
	 		// )
	 		// , 'Form' => array('recursive' => 1)
	 		// // ,'Basic'
 		// );
//                 
        // //Configure AuthComponent
        // $this->Auth->authorize = 'Actions';
        // $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        // $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
        // $this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
//         
        // // don't require logging in for login and logout actions
        // $this->Auth->allow('lang','display');
        // $this->Auth->allow('*');
        // $this->set("utente",$this->Session->read('Auth.User'));
        
		$this->_setLanguage();

		// carico in sessione i parametri
		// if(!$this->Session->read('parametri')){
		    // $this->loadModel('Parametro');
		    // $parametri = $this->Parametro->find("list", array("fields"=>array("Parametro.codice","Parametro.valore")));
		    // if($parametri){
                // $this->Session->write('parametri',$parametri);
		    // } else {
				// throw new Exception(__("Attenzione! Non riesco a caricare la lista dei Parametri. contattare l'amministratore"));
		    // }
        // }
        //MA: se i mestieri sono in sessione non vengono più caricati ciclicamente dal db
		
		// carico le notifiche dello user connesso
    }
    
	public function lang($locale) {
		$this->Session->write('Config.language', $locale);
		// se l'utente e loggato reimposto la lingua dello user
		if ($this->Session->check("Auth.User.id")) {
		    $this->loadModel('User');
			// $this->User->recursive=-1;
			// $this->User->read(null,$this->Session->read("Auth.User.id"));
			// pr($this->User);die;
			$this->User->set("id",$this->Session->read("Auth.User.id"));
		    $this->User->saveField("lang",$locale);
			// aggiorno l'utente in sessione
			$this->Auth->refreshUserData();
		}
		if ($locale=="ita")
			$this->Session->write('Config.locale', "it_IT");
		else if ($locale=="eng")
			$this->Session->write('Config.locale', "en_US");
		// tolgo dalla sessione la lista dei mestieri che deve essere ripresa nella lingua corrente
		$this->Session->delete("mestieri");
		$this->redirect($this->referer());
	}
	
	function _setLanguage() {
	    if ($this->Session->check('Config.language')) {
			Configure::write('Config.language', $this->Session->read("Config.language"));
			Configure::write('Config.locale', $this->Session->read("Config.locale"));
			// setlocale per la traduzione delle date
	    }
		setlocale(LC_TIME, Configure::read("Config.language"), Configure::read("Config.locale"));
	}

}
